基于UG二次開發(fā)的工業(yè)機(jī)器人作業(yè)仿真系統(tǒng)設(shè)計(jì)
2013/11/5 10:26:23
1. 引言
工業(yè)機(jī)器人在現(xiàn)代制造系統(tǒng)中應(yīng)用廣泛。機(jī)器人作業(yè)仿真系統(tǒng)軟件,通過在CAD環(huán)境中進(jìn)行機(jī)器人虛擬樣機(jī)的布局設(shè)計(jì)與操作仿真,能夠有效地輔助設(shè)計(jì)人員進(jìn)行機(jī)器人虛擬示教、機(jī)器人工作站布局、機(jī)器人工作姿態(tài)優(yōu)化,在物理工作站制造之前驗(yàn)證設(shè)計(jì)的合理性,在虛擬環(huán)境中生成控制機(jī)器人作業(yè)的數(shù)控加工代碼。
目前不少學(xué)者對工業(yè)機(jī)器人仿真進(jìn)行了研究。文獻(xiàn)[1]基于面向?qū)ο蠹夹g(shù)研究了示教再現(xiàn)型弧焊機(jī)器人離線編程系統(tǒng),介紹了系統(tǒng)總體設(shè)計(jì)方法和子模塊功能結(jié)構(gòu)。文獻(xiàn)[2]提出了機(jī)器人運(yùn)動(dòng)過程的協(xié)調(diào)算法,采用插補(bǔ)計(jì)算的方法解決了仿真系統(tǒng)中機(jī)器人末端執(zhí)行器的直線運(yùn)動(dòng)和圓弧運(yùn)動(dòng)。文獻(xiàn)[3]針對PUMA560機(jī)器人,開發(fā)了一個(gè)面向?qū)ο蟮碾x線編程和圖形仿真系統(tǒng)。文獻(xiàn)[4]提出了一種交互式三維可視化離線編程和動(dòng)態(tài)仿真系統(tǒng),并研究了焊接工藝中的焊道規(guī)劃技術(shù)。文獻(xiàn)[5]研究了離線編程系統(tǒng)的體系結(jié)構(gòu),介紹了工業(yè)機(jī)器人仿真軟件的功能模塊。文獻(xiàn)[6]論述了工業(yè)機(jī)器人仿真領(lǐng)域中的一種前沿技術(shù)即虛擬樣機(jī)技術(shù),通過數(shù)字化的手段為產(chǎn)品設(shè)計(jì)制造提供仿真分析。文獻(xiàn)[7]研究了基于Matlab的焊接機(jī)器人運(yùn)動(dòng)學(xué)分析及仿真,運(yùn)用DH方法建立了焊接機(jī)器人運(yùn)動(dòng)學(xué)方程,得到了機(jī)器人在不同坐標(biāo)空間的各種運(yùn)動(dòng)參數(shù)曲線和數(shù)據(jù)。為了適應(yīng)企業(yè)的設(shè)計(jì)環(huán)境,在一般CAD軟件中實(shí)現(xiàn)符合企業(yè)需求的工業(yè)機(jī)器人運(yùn)動(dòng)仿真,本文通過UG軟件的Open C API二次開發(fā)技術(shù),構(gòu)造了與UG軟件無縫集成的工業(yè)機(jī)器人作業(yè)仿真系統(tǒng)。
2. 仿真系統(tǒng)體系結(jié)構(gòu)
基于UG二次開發(fā)的工業(yè)機(jī)器人作業(yè)仿真系統(tǒng)采用Visual C++和UG Open C API開發(fā)。系統(tǒng)與UG軟件無縫集成,UG軟件作為系統(tǒng)的底層支撐平臺(tái)。這款軟件成功地應(yīng)用于汽車門框焊接機(jī)器人的作業(yè)仿真及布局設(shè)計(jì)。系統(tǒng)界面如圖1所示。
圖1 基于UG二次開發(fā)的工業(yè)機(jī)器人作業(yè)仿真系統(tǒng)
軟件系統(tǒng)的體系結(jié)構(gòu)分為3個(gè)層次,15個(gè)子模塊。如圖2所示。人機(jī)接口層為操作人員提供了控制機(jī)器人虛擬樣機(jī)的接口;作業(yè)管理層是軟件系統(tǒng)的核心,用來實(shí)現(xiàn)人機(jī)接口層的操作命令;UG支撐層負(fù)責(zé)系統(tǒng)的圖形繪制,以及機(jī)器人運(yùn)動(dòng)和碰撞檢測在UG軟件中的實(shí)現(xiàn)。仿真系統(tǒng)有4大主要功能,即機(jī)器人運(yùn)動(dòng)求解與仿真、機(jī)器人運(yùn)動(dòng)過程碰撞檢測、機(jī)器人作業(yè)過程重用、機(jī)器人布局優(yōu)化。本文著重研究機(jī)器人運(yùn)動(dòng)仿真及碰撞檢測的關(guān)鍵技術(shù)。
圖2 仿真系統(tǒng)的體系結(jié)構(gòu)
3. 機(jī)器人運(yùn)動(dòng)學(xué)求解及實(shí)現(xiàn)
工業(yè)機(jī)器人由若干桿件通過關(guān)節(jié)運(yùn)動(dòng)副裝配組成,如圖3所示。考慮到機(jī)器人基座需要由一個(gè)桿件表示,因此一個(gè)N自由度的機(jī)器人由N個(gè)關(guān)節(jié)連接了N+1個(gè)桿件。工業(yè)機(jī)器人是開鏈拓?fù)浣Y(jié)構(gòu)的多體系統(tǒng),可以用拉格朗日多體運(yùn)動(dòng)學(xué)[8]描述機(jī)器人的運(yùn)動(dòng)行為。通常機(jī)器人學(xué)DH法則[9]用4×4的齊次矩陣來表示桿件在參考坐標(biāo)系中的位置和姿態(tài)。
與運(yùn)動(dòng)學(xué)正問題對應(yīng)的是機(jī)器人關(guān)節(jié)坐標(biāo)控制方式,即操作人員直接指定各關(guān)節(jié)的移動(dòng)長度或轉(zhuǎn)動(dòng)角度,從而帶動(dòng)末端執(zhí)行器運(yùn)動(dòng)。與運(yùn)動(dòng)學(xué)逆問題對應(yīng)的是機(jī)器人直角坐標(biāo)控制方式,即操作人員指定末端執(zhí)行器所期望的位置和姿態(tài),然后求解出各關(guān)節(jié)需要的移動(dòng)長度或轉(zhuǎn)動(dòng)角度,從而帶動(dòng)末端執(zhí)行器運(yùn)動(dòng)。
以上是機(jī)器人作業(yè)仿真系統(tǒng)中作業(yè)管理層進(jìn)行的機(jī)器人運(yùn)動(dòng)學(xué)求解。無論關(guān)節(jié)坐標(biāo)控制還是直角坐標(biāo)控制,UG支撐層都是通過關(guān)節(jié)運(yùn)動(dòng)來帶動(dòng)機(jī)器人末端執(zhí)行器運(yùn)動(dòng)的。在仿真系統(tǒng)開發(fā)實(shí)踐中,發(fā)現(xiàn)UG運(yùn)動(dòng)模塊難以進(jìn)行二次開發(fā),因此本文采用對UG裝配模塊的二次開發(fā)來實(shí)現(xiàn)機(jī)器人運(yùn)動(dòng)仿真,有修改裝配約束和裝配重定位兩種技術(shù)方案。
采用修改裝配約束的方案需要事先建立合適的機(jī)器人裝配約束。如轉(zhuǎn)動(dòng)關(guān)節(jié)應(yīng)采用面面角度約束,移動(dòng)副應(yīng)采用面面距離約束。關(guān)鍵代碼如下:
//由機(jī)器人裝配模型的實(shí)例獲取原型
tRobotPart = UF_ASSEM_ask_prototype_of_occ (tRobot);
//設(shè)置當(dāng)前機(jī)器人裝配模型為工作部件,并保存原始工作部件
UF_ASSEM_set_work_part_quietly (tRobotPart, &tOldWorkPart);
//創(chuàng)建裝配模型中轉(zhuǎn)動(dòng)關(guān)節(jié)角度約束的表達(dá)式
sprintf (newExp, "%s=%lf", Joint.lh_str, Joint.dAngle);
//修改裝配約束
UF_MODL_edit_exp (newExp);
//更新模型,這樣機(jī)器人運(yùn)動(dòng)副就發(fā)生了轉(zhuǎn)動(dòng)
UF_MODL_update ( );
//恢復(fù)原始工作部件為當(dāng)前工作部件
UF_ASSEM_set_work_part_quietly (tOldWorkPart, &tRobotPart);
采用裝配重定位的方案不需要建立裝配約束,但需要指定桿件局部坐標(biāo)系原點(diǎn)和姿態(tài)矩陣的前6個(gè)元素。關(guān)鍵代碼如下:
// Joint.tIns為桿件實(shí)例;new_origin是double[3]數(shù)組,為局部坐標(biāo)系原點(diǎn);new_csys_matrix是double[6]數(shù)組,為局部坐標(biāo)系x軸和y軸的姿態(tài)
UF_ASSEM_reposition_instance (Joint.tIns, new_origin, new_csys_matrix);
仿真系統(tǒng)中機(jī)器人運(yùn)動(dòng)過程如圖4所示。
圖4 兩臺(tái)六自由度焊接機(jī)器人協(xié)同運(yùn)動(dòng)
4. 機(jī)器人運(yùn)動(dòng)過程碰撞檢測及實(shí)現(xiàn)
碰撞檢測可以防止機(jī)器人運(yùn)動(dòng)過程中與工件、夾具、機(jī)架等發(fā)生干涉。由人機(jī)接口層中的碰撞檢測開關(guān),作業(yè)管理層中的碰撞檢測子模塊,和UG支撐層中的間隙檢查功能構(gòu)成。機(jī)器人運(yùn)動(dòng)過程中的碰撞檢測流程如圖5所示。UG支撐層中實(shí)現(xiàn)間隙檢查的關(guān)鍵代碼為:
//進(jìn)行間隙分析,datasetWorkpart為分析結(jié)果數(shù)據(jù)集合
UF_CLEAR_do_clearance_analysis(datasetWorkpart);
//獲得間隙分析結(jié)果,其中summary.n_all_interf中存儲(chǔ)了干涉數(shù)目
UF_CLEAR_ask_results(datasetWorkpart,&summary);
仿真系統(tǒng)中機(jī)器人碰撞檢測如圖6所示。
圖5 碰撞檢測流程
圖6 機(jī)器人碰撞檢測
5. 結(jié)論
本文采用UG軟件的Open C API二次開發(fā)技術(shù),構(gòu)造了與UG無縫集成的工業(yè)機(jī)器人作業(yè)仿真系統(tǒng)。設(shè)計(jì)了包含人機(jī)接口層、作業(yè)管理層、UG支撐層的機(jī)器人作業(yè)仿真軟件體系結(jié)構(gòu)。針對UG運(yùn)動(dòng)模塊難以進(jìn)行二次開發(fā)的問題,本文通過對UG裝配模塊的二次開發(fā)來實(shí)現(xiàn)機(jī)器人運(yùn)動(dòng)仿真。機(jī)器人運(yùn)動(dòng)過程碰撞檢測功能則由UG間隙檢查模塊的二次開發(fā)實(shí)現(xiàn)。仿真軟件成功地應(yīng)用于汽車門框焊接機(jī)器人的作業(yè)仿真及布局設(shè)計(jì)。
提交
查看更多評論
其他資訊
自動(dòng)化機(jī)床的故障排除技術(shù)淺析
安川焊接機(jī)器人編程
ABB機(jī)器人控制軟件RobotWare應(yīng)用手冊SafeMove(英文)
ABB IRB7600 機(jī)器人維護(hù)信息
ABB IRC5P機(jī)器人培訓(xùn)教材